package com.yhq.spring.websocket.parser.model;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

/**
 * @author hqyin
 * @date 2024/11/20 12:00 PM
 */
@Data
public class HkConvertRes {
    /**
     * ok：正常 failed：出错
     */
    private String status;
    /**
     * server_ready：收到 signal 为 start 请求后返回，表示服务端准备好接收
     * 数据
     * partial_result：临时识别结果 ，注意：请求流式 ASR server 才会返回
     * final_result ：最终识别结果
     * speech_end：结束语音识别
     */
    private String type;

    /**
     * 识别结果
     */
    private String result;

    /**
     * 识别结果的起始点信息，json 数组类型；
     */
    @JSONField(name = "result_pieces")
    private String resultPieces;

    /**
     * 详细错误信息
     * "Wrong protocol"：错误协议，请求的 json 格式不对
     * "Wrong message header"：Text 请求没有找到 sigal 字段
     * "Unexpected signal type"：Text 请求的 sigal 字段值不是 start 也不是 end
     * "boolean true or false is expected for continuous_decoding option"：Text
     * 请求的 continuous_decoding 字段不是 boolean 类型
     * "integer is expected for nbest option"：Text 请求 nbest 字段不是 integer
     * 类型
     * "Start signal is expected before binary data"：不是正规的请求方式，第
     * 一个请求必须是 Text 请求
     * "Server licence expired"：服务证书过期
     * "Connection number exceeded"：链接数过载
     */
    private String message;

    /**
     * 当前链接所在的会话 ID
     */
    private String session;

    /**
     * vad 切分后每一个语音片段的 ID
     */
    private String trace;
    /**
     * 有以下 4 个键值对：
     * tm_vad_start：uint64_t 类型，vad 开始时间戳，精确到毫秒
     * tm_vad_end：uint64_t 类型，vad 结束时间戳，精确到毫秒
     * tm_first_result：uint64_t 类型，第一个临时结果时间戳，精确到毫秒；注
     * 意：流式识别才有临时结果
     * tm_final_result：uint64_t 类型，最终识别结果时间戳，精确到毫秒
     */
    private String timestamps;
}
